Skip to content

feat: remove product config & clean up#738

Open
adwk67 wants to merge 7 commits into
mainfrom
feat/smooth-operator/remove-product-config
Open

feat: remove product config & clean up#738
adwk67 wants to merge 7 commits into
mainfrom
feat/smooth-operator/remove-product-config

Conversation

@adwk67
Copy link
Copy Markdown
Member

@adwk67 adwk67 commented Jun 5, 2026

Removed the product-config based configuration validation.
Config and environment overrides are now merged directly from the CRD into the validated cluster (including the formerly properties.yaml-provided ROW_LIMIT and SUPERSET_WEBSERVER_TIMEOUT recommended values), the Flask config writer is vendored locally (identical to airflow-operator's, a shared-crate candidate), and the product-config crate dependency is dropped.
The --product-config CLI flag and PRODUCT_CONFIG env var are now no-ops.

Definition of Done Checklist

  • Not all of these items are applicable to all PRs, the author should update this template to only leave the boxes in that are relevant
  • Please make sure all these things are done and tick the boxes

Author

  • Changes are OpenShift compatible
  • CRD changes approved
  • CRD documentation for all fields, following the style guide.
  • Helm chart can be installed and deployed operator works
  • Integration tests passed (for non trivial changes)
  • Changes need to be "offline" compatible
  • Links to generated (nightly) docs added
  • Release note snippet added

Reviewer

  • Code contains useful comments
  • Code contains useful logging statements
  • (Integration-)Test cases added
  • Documentation added or updated. Follows the style guide.
  • Changelog updated
  • Cargo.toml only contains references to git tags (not specific commits or branches)

Acceptance

  • Feature Tracker has been updated
  • Proper release label has been added
  • Links to generated (nightly) docs added
  • Release note snippet added
  • Add type/deprecation label & add to the deprecation schedule
  • Add type/experimental label & add to the experimental features tracker

adwk67 and others added 5 commits June 5, 2026 09:24
…riter

Fixes the [patch] key (it was missing the .git suffix, so the patch could never
apply) and activates the smooth-operator branch of operator-rs (matching
trino/hdfs/airflow/kafka) as the foundation for the v2 config_overrides
adoption later in this series.

Vendors the Flask Python-config writer into config/writer — byte-identical to
airflow-operator's config/writer.rs (both are candidates for one shared crate;
keeping them diff-empty makes that a trivial lift) — and repoints crd/mod.rs and
resources/configmap.rs to it. No behaviour change (33 tests pass). Regenerated
Cargo.nix/crate-hashes.json.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replaces the product-config validation path: ValidatedRoleGroupConfig now
carries the complete superset_config.py key/value map (operator recommended
values + config-derived values + user configOverrides, in that precedence) and
the merged env overrides, assembled in validate. The recommended values
formerly injected from properties.yaml (ROW_LIMIT=50000,
SUPERSET_WEBSERVER_TIMEOUT=300, node role only, incl. the Trino-query timeout
rationale) and the MAPBOX secret env injection from Configuration::compute_env
move into collect_role_group_config. configOverrides now use
stackable_operator::v2::config_overrides::KeyValueConfigOverrides (matching the
other operators); the v1 KeyValueOverridesProvider and Configuration impls are
removed. The statefulset still reads SUPERSET_WEBSERVER_TIMEOUT from the final
file map, preserving configOverrides-based override semantics.

Drops the product-config crate dependency (transitive via stackable-operator
remains). CRD gains `nullable: true` on configOverrides values. Rendered
superset_config.py and env vars are unchanged (33 tests pass; byte parity to be
confirmed via kuttl). Regenerated extra/crds.yaml and Cargo.nix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…to controller/build

Extracts the superset_config.py rendering (TALISMAN default + Superset/OPA
settings + per-rolegroup properties + FILE_HEADER/FILE_FOOTER + Flask writer +
celery connection class) into config/superset_config::build(), and relocates the
ConfigMap assembler to controller/build/config_map.rs — matching the
config/<file-builder> + controller/build/config_map.rs layout of airflow, hdfs,
kafka and trino. The FILE_HEADER/FILE_FOOTER constants move into the builder,
removing the last stackable_operator::product_config_utils import. No behaviour
change (33 tests pass).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ngelog

Removes the --product-config section from the commandline reference and the
PRODUCT_CONFIG section from the environment-variables reference (both are now
no-ops via the shared RunArguments), reduces the product-config properties.yaml
files to an empty shell (their ROW_LIMIT / SUPERSET_WEBSERVER_TIMEOUT
recommended values now live in controller/validate.rs; files retained pending a
later Helm config refactor), and notes the product-config removal in the
changelog.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@adwk67 adwk67 marked this pull request as ready for review June 5, 2026 08:43
adwk67 and others added 2 commits June 5, 2026 11:04
Replace the vendored flask writer (rust/operator-binary/src/config/writer.rs)
with stackable_operator::v2::flask_config_writer, which now hosts the same
code (moved there via operator-rs #1217, merged into the smooth-operator
branch; the vendored copy was kept byte-identical to airflow-operator's
precisely to enable this move).

No behaviour change; rendered superset_config.py output is byte-identical by
construction (same code, new home).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@adwk67 adwk67 self-assigned this Jun 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant